﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FA.Library.Util;
using System.ComponentModel;

namespace FA.Library.Sim.Aircraft
{
    public interface AircraftVelocity : ICloneable, INotifyPropertyChanged
    {
        /// <summary>
        /// The current G force.
        /// </summary>
        float GForce { get; set; }

        /// <summary>
        /// Speed relative to the earth's surface.
        /// </summary>
        float GroundVelocity { get; }

        /// <summary>
        /// True longitudinal speed, relative to aircraft axis.
        /// </summary>
        float VelocityBodyZ { get; set; }

        /// <summary>
        /// True lateral speed, relative to aircraft axis.
        /// </summary>
        float VelocityBodyX { get; set; }

        /// <summary>
        /// True vertical speed, relative to aircraft axis.
        /// </summary>
        float VelocityBodyY { get; set; }

        /// <summary>
        /// Speed relative to earth, in North/South direction.
        /// </summary>
        float VelocityWorldZ { get; set; }

        /// <summary>
        /// Speed relative to earth, in East/West direction.
        /// </summary>
        float VelocityWorldX { get; set; }

        /// <summary>
        /// Speed relative to earth, in vertical direction.
        /// </summary>
        float VelocityWorldY { get; set; }

        /// <summary>
        /// Acceleration relative to aircraft axix, in east/west direction.
        /// </summary>
        float AccelerationBodyX { get; set; }

        /// <summary>
        /// Acceleration relative to aircraft axis, in vertical direction.
        /// </summary>
        float AccelerationBodyY { get; set; }

        /// <summary>
        /// Acceleration relative to aircraft axis, in north/south direction.
        /// </summary>
        float AccelerationBodyZ { get; set; }

        /// <summary>
        /// Acceleration relative to earth, in east/west direction.
        /// </summary>
        float AccelerationWorldX { get; set; }

        /// <summary>
        /// Acceleration relative to earch, in vertical direction.
        /// </summary>
        float AccelerationWorldY { get; set; }

        /// <summary>
        /// Acceleration relative to earth, in north/south direction.
        /// </summary>
        float AccelerationWorldZ { get; set; }

        /// <summary>
        /// Acceleration relative to aircraft axis, in east/west direction.
        /// </summary>
        float RotationalVelocityX { get; set; }

        /// <summary>
        /// Acceleration relative to aircraft axis, in vertical direction.
        /// </summary>
        float RotationalVelocityY { get; set; }

        /// <summary>
        /// Acceleration relative to aircraft axis, in north/south direction.
        /// </summary>
        float RotationalVelocityZ { get; set; }
    }
}
